﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.Entity;
using System.IO;

namespace proyectoferreteria
{
    public partial class frmGaleriaProducto : System.Web.UI.Page
    {
        bdferreteriaEntities contex = new bdferreteriaEntities();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.mostrarProductos();
                this.cargartrewiewSubcategoria();
                this.cargarcomboMarca();
            }
        }

        private List<producto> obtenerImagen()
        {
            List<producto> milista = new List<producto>();
            var objproducto = from a in contex.producto
                              select a;
            //foreach (producto fila in objproducto)
            //{
            //    producto i = new producto();
            //    i.idproducto = fila.idproducto;
            //    i.nombre_producto = fila.nombre_producto;
            //    i.pc = fila.pc;
            //    i.pv = fila.pv;
            //    i.cantidad = fila.cantidad;
            //    i.descripcion = fila.descripcion;
            //    i.idmarca = fila.idmarca;
            //    i.idsubcategoria = fila.idsubcategoria;
            //    i.img1 = fila.img1;
            //    i.nombre_imagen = fila.nombre_imagen;
            //}
            //return milista;
            return objproducto.ToList();
        }
        private List<producto> obtenerImagenParametrizado(System.Web.UI.WebControls.TreeView tw, System.Web.UI.WebControls.DropDownList cb)
        {
            var objproducto = from a in contex.producto
                              select a;

            foreach (System.Web.UI.WebControls.TreeNode nodo in tw.CheckedNodes)
            {
                if (nodo.Text != "Todos")
                {
                    long idsubcategoria = long.Parse(nodo.Value.ToString());
                    objproducto = objproducto.Where(a => a.idsubcategoria == idsubcategoria);
                }
            }
            if (cb.Text != "0")
            {
                long idmarca = long.Parse(cb.SelectedValue.ToString());
                objproducto = objproducto.Where(a => a.idmarca == idmarca);
            }

            //List<producto> milista = new List<producto>();

            //foreach (producto fila in objproducto)
            //{
            //    producto i = new producto();
            //    i.idproducto = fila.idproducto;
            //    i.nombre_producto = fila.nombre_producto;
            //    i.pc = fila.pc;
            //    i.pv = fila.pv;
            //    i.cantidad = fila.cantidad;
            //    i.descripcion = fila.descripcion;
            //    i.idmarca = fila.idmarca;
            //    i.idsubcategoria = fila.idsubcategoria;
            //    i.img1 = fila.img1;
            //    i.nombre_imagen = fila.nombre_imagen;
            //}
            //return milista;
            return objproducto.ToList();

        }
        private void mostrarProductos()
        {
            this.DataList1.DataSource = this.obtenerImagen();
            this.DataList1.DataBind();
        }
        private void mostrarProductosParametrizado(System.Web.UI.WebControls.TreeView tw, System.Web.UI.WebControls.DropDownList cb)
        {
            this.DataList1.DataSource = this.obtenerImagenParametrizado(tw, cb);
            this.DataList1.DataBind();
        }

        private void cargartrewiewSubcategoria()
        {
            TreeNode tvn1 = new TreeNode();
            tvn1.Text = "Todos";
            tvn1.Value = "0";
            this.TreeView1.Nodes.Add(tvn1);

            var objsubcategoria = from a in contex.subcategoria
                                  select a;
            foreach (subcategoria fila in objsubcategoria)
            {
                TreeNode tvn2 = new TreeNode();
                tvn2.Text = fila.nombre_subcategoria;
                tvn2.Value = fila.idsubcategoria.ToString();
                tvn1.ChildNodes.Add(tvn2);
            }
        }

        private void cargarcomboMarca()
        {
            var marca = from a in contex.marca
                        select a;
            this.cbmarca.DataSource = marca;
            this.cbmarca.DataTextField = "nombre_marca";
            this.cbmarca.DataValueField = "idmarca";
            this.cbmarca.DataBind();
        }             
        protected void btbuscar_Click(object sender, EventArgs e)
        {
            this.mostrarProductosParametrizado(this.TreeView1, this.cbmarca);
        }

        
        protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            string dirfisica1 = @"D:\AvSistemasInformacionIII\PROYECTOSI-III\proyectoferreteria\proyectoferreteria\imagenes\";
            producto objproducto = (producto)e.Item.DataItem;
            ListBox lb = (ListBox)e.Item.FindControl("ListBox1");
            lb.Items.Add("Producto:      " + objproducto.nombre_producto);
            lb.Items.Add("Precio:        " + objproducto.pv);
            lb.Items.Add("Descripcion:       " + objproducto.descripcion);

            //Cargando la imagen al control
            dirfisica1 += objproducto.nombre_imagen;
            File.WriteAllBytes(dirfisica1, objproducto.img1);
            ImageButton im = (ImageButton)e.Item.FindControl("ImageButton1");
            string dirlogica = "~\\imagenes\\" + objproducto.nombre_imagen;
            im.ImageUrl = dirlogica;

            //Cargando los datos de cada combo
            long idsubcategoria = objproducto.idsubcategoria;
            subcategoria objsubcategoria = contex.subcategoria.FirstOrDefault(a => a.idsubcategoria == idsubcategoria);
            lb.Items.Add("Subcategoria:      " + objsubcategoria.nombre_subcategoria);

            long idmarca = objproducto.idmarca;
            marca objmarca = contex.marca.FirstOrDefault(a => a.idmarca == idmarca);
            lb.Items.Add("Marca:        " + objmarca.nombre_marca);

            HyperLink linkImagen = (HyperLink)e.Item.FindControl("HyperLink1");
            linkImagen.NavigateUrl = "frmconfirmarproducto.aspx?idproducto=" + objproducto.idproducto.ToString();

        }

              
    }
}